define(
		[ 'ng', '_', 'profesor/js/profesor-module', 'ui.router',
				'common/js/util-module', "$" ],
		function(angular, _) {
			var app = angular.module("ProfesorApp", [ 'UserModule', 'ProfesorModule',
					"ui.router", "UtilModule" ]);
					
		
			
			app.directive("epCalificacionPeriodo", function(filterFilter) {
				return {
					restrict : 'E',
					replace : true,
					templateUrl : "/common/templates/ep-calificacion-periodo.html",
					transclude : true,
					scope : {
						epIndicadoresEstudiante : '=',
						epEstudiante : '=',
						epIndicadoresDisponibles : '=',
						epNota : '=',
						epAddIndicador : '&',
						epRemoveIndicador : '&',
						epChangeCalificacion : '&',
						epIndex : '=',
						epDrop : '&',

					},
					link : function(scope) {
						scope.indicadoresEstudianteMap = {};
						scope.indicadoresDisponibles = [];

						var fixLists = function() {
							scope.indicadoresDisponibles = _.chain(
									scope.epIndicadoresDisponibles).map(function(obj) {
								return _.pick(obj, "categoria", "consecutivo")
							}).reject(
									function(obj) {
										return _.some(scope.epIndicadoresEstudiante, function(ie) {
											return ie.categoriaIndicador == obj.categoria
													&& ie.consecutivoIndicador == obj.consecutivo
										});
									}).value();

						};
						scope.getIndicadoresDisponibles=function(query,callback,categoria){
							var query=query.toUpperCase();
								
							var x=filterFilter(scope.indicadoresDisponibles,function(val){
								
								return val.categoria==categoria && (val.categoria.charAt(0)+val.consecutivo).indexOf(query)!=-1;
							});
							
							callback(x);
						}
						scope.removeIndicador = function(indicador) {
							scope.epRemoveIndicador(indicador);
							_.remove(scope.epIndicadoresEstudiante, function(indic) {
								return indic.categoria == indicador.categoria
										&& indic.consecutivo == indicador.consecutivo;
							})
						}
						scope.$watchCollection("epIndicadoresDisponibles", fixLists);
						scope.$watchCollection("epIndicadoresEstudiante", function() {
							fixLists();
							scope.indicadoresEstudianteMap = _.chain(
									scope.epIndicadoresEstudiante).groupBy('categoriaIndicador')
									.defaults({
										"Fortalezas" : [],
										"Debilidades" : [],
										"Recomendaciones" : []
									}).value();

						});
						scope.addIndicador = function(indicador) {
							console.log("pasa");
							scope.epAddIndicador({
								indicador : indicador
							});

						}
						scope.removeIndicador = function(indicador) {
							scope.epRemoveIndicador({
								indicador : indicador
							});
						}
						scope.changeCalificacion = function(calificacion) {
							scope.epChangeCalificacion({
								calificacion : calificacion
							});
						}
					}
				}
			})

			return app;

		});
